Remote procedure calls (RPCs) are widely used in data communications, particularly in layer 5 of OSI architecture-type systems. An RPC is a request conforming to a protocol that a program can use to request a service from a program on another computer on the network. The client program making the request includes an API which receives calls to remote procedures from other parts of the program and passes them to a runtime program in the client. The runtime program in the client knows the format for addressing the remote server and relays the procedure request accordingly.
Generally speaking, remote method invocations (RMIs) are RPCs which are written in the Java programming language. Unlike their RPC counterparts, RMIs are object-oriented and can pass objects along with the RMI requests, as well as receive objects as results. Thus, RMIs are more appropriate for distributed object-oriented systems where communication between objects at different addresses on one or more networks is needed. In a typical RMI application, a server application creates a number of remote objects (remote to the client systems), makes references to those objects accessible via a registry, and allows clients to invoke methods on those remote objects. An application on a client system gets references to these remote server objects and invokes their methods. In this scheme, RMI is the way in which the client and server communicate with respect to these invoked methods. Like RPC, these layers are generally located between the transport and application layers.
Differentiated service (DiffServ) enabled networks have become more popular in recent years. DiffServ is a network service mechanism that classifies network traffic into a number of differentiated service classes and controls the network traffic so that certain classes get precedence or service quality. The preference relationships are defined by service level agreements (SLAs) among and between network applications and service providers. For example, one SLA can provide that certain classes of traffic between two networks, such as important business applications, should be prioritized over other classes of traffic, such as web surfing, between the networks. As another example, an SLA can specify that a certain class of traffic from a first network to a second network should be prioritized over a certain class of traffic from the first network to a third network. DiffServ-enabled devices in a network use six-bit Differentiated Services Code Point (DSCP) labels included in IP packet headers to know how to forward the packet.
Related to the concept of DiffServ is that of edge routers. An edge router is a device for forwarding data between two networks to which it is connected. Edge routers are used to classify data flows of a DiffServ network by comparing packets in such flows with relevant SLA information stored in the router. The edge router receives packets bound for a DiffServ network and a quality of service (QoS) classifier within the edge router and applies DSCP labels according to the SLA specification. If a packet belongs to a flow with a high priority, it receives a DSCP corresponding to that high priority; if the packet belongs to a flow with a low priority, it receives a DSCP corresponding to that low priority.
The packet is then delivered to an external network for eventual transmission to its ultimate destination according to the DSCP requirements. If the DiffServ network becomes congested, the packets labeled with high priority DSCPs are more likely to successfully reach their destinations; packets labeled with low priority DSCPs might only receive best effort service. This helps to guarantee a better quality of service for higher priority flows.
RMI calls may be hard to detect by QoS classifiers in edge routers; thus, an RMI which should be given a high priority DSCP might not be properly classified, resulting in a failure in QoS requirements. This is because QoS classifiers usually screen packets in accordance with a five-tuple that includes a socket port number. RMI flows generally do not always use well-known port numbers. This creates a problem because priority levels which should be accorded to RMIs may then be usurped by other applications that can more easily be screened for DiffServ classification and transmission.